package {
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	
	import game.core.BulletFactory;
	import game.core.GameSystem;
	import game.core.XMLLoader;
	import game.core.bullet.FireBullet;
	import game.core.objects.Ball;
	import game.core.role.DefaultRole;
	BallSkin;
	ExplodeBallSkin;
	PauseBallSkin;
	FireBulletSkin;
	ExplodeEffect;
	
	/**
	 * 整个游戏的流程
	 * 
	 * 需要实现的内容:
	 * 	1.实现暂停小球的功能,也就是说,需要有一个暂停的小球,类似于小白点的东西,打中之后,需要全部停止一些时间
	 * 		可暂时随便写一个固定的时间,这个时间最后是需要通过config来配置出来
	 *  2.实现黄色大球,也就是说,点击黄色大球时,所有的东西都要爆破
	 *  3.实现ExplodeBall,指定一下具体的范围,然后在范围内的球都会爆炸
	 *  4.实现角色子弹的发射,角色现在随便用张图片或者画一个框子就可以了,然后完全实现一个点击的过程,hitTest,如果可以优化稍后优化.
	 *  5.如果有能力就实现一个TextFieldEffect吧,就是一个简单的分数向上飘的一个过程
	 * 
	 * 
	 * 
	 * 
	 * 
	 * 
	 *  6.加速度是否有必要实现,现在已经有重力加速度,或者可以在原来的基础上,增加速度
	 * 
	 * 
	 * 
	 * 
	 *  道具的功能的设计
	 * 
	 * 
	 * 1.设计xml的实现的方式,以及初始化加载的数据的方式
	 * 2.组装游戏,增加简单的UI,以及相关的文本,比如时间的处理方式
	 * 3.增加相应的Skin来做一些简单的处理
	 * 4.左右移动能否换成鼠标移动呢?
	 * 
	 * complier 里增加以下参数
	 * 	-define=CONFIG::debug,true -define=CONFIG::release,false
	 * 
	 * 游戏里还有一些bug
	 * 
	 */ 
	[SWF(width=760,height=600,backgroundColor=0xFFFFFF)]
	public class BallGame extends GameSystem
	{
		public function BallGame()
		{
			this.addEventListener(Event.ADDED_TO_STAGE,addToStageHandler);
		}
		
		public static const TEST_PATH:String = "item.xml";
		
		private function addToStageHandler(event:Event):void {
			SWFProfiler.init(this.stage,this);
			this.removeEventListener(Event.ADDED_TO_STAGE,addToStageHandler);
			stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            stage.frameRate = 40;
            var xmlLoader:XMLLoader = new XMLLoader(TEST_PATH);
            xmlLoader.addEventListener(Event.COMPLETE,completedHandler);
            xmlLoader.execute();
		}
		
		private function completedHandler(event:Event):void {
			trace("数据已经加载完成!");
			this.init();
		}
		
		private function init():void {
			screen.init(gameStart);
		}
		private function gameStart():void{
			role = new DefaultRole();
			role.bulletKind = BulletFactory.FIRE_BULLET;
			this.addGameObject(role);
			this.start(); 
			screen.start();
		}
		
		private var role:DefaultRole;
	}
}
